草庐IT

JavaBeans 比较

全部标签

c++ - 处理比较 : empty classes vs. 未定义类与 void*

微软的GDI+定义了许多空类,在内部被视为句柄。例如,(sourceGdiPlusGpStubs.h)//Approach1classGpGraphics{};classGpBrush{};classGpTexture:publicGpBrush{};classGpSolidFill:publicGpBrush{};classGpLineGradient:publicGpBrush{};classGpPathGradient:publicGpBrush{};classGpHatch:publicGpBrush{};classGpPen{};classGpCustomLineCap{};

c++ - 结构的通用比较运算符

在我的许多单元测试中,我需要比较只有数据成员的简单结构的内容:structObject{intstart;intstop;std::stringmessage;}现在,如果我想写这样的东西:CHECK(object1==object2);我总是要实现:booloperator==(constObject&lhs,constObject&rhs){returnlhs.start==rhs.start&&lhs.stop==rhs.stop&&lhs.message=rhs.message;}编写所有这些比较函数变得乏味,但也容易出错。试想一下,如果我向Object添加一个新的数据成员,但

C++:比较基类和派生类的指针

我想要一些关于在这种情况下比较指针时的最佳实践的信息:classBase{};classDerived:publicBase{};Derived*d=newDerived;Base*b=dynamic_cast(d);//WhencomparingthetwopointersshouldIcastthem//tothesametypeordoesitnotevenmatter?booltheSame=b==d;//Or,booltheSame=dynamic_cast(b)==d? 最佳答案 如果你想比较任意类层次结构,安全的做法是

c++ - C++ 优先级队列中的运算符重载或比较函数

我正在用C++编写一个程序,我想定义我类(class)之一的优先级队列。我需要它通过类成员变量之一比较对象。我使用了operator我是这样做的:#include#includeusingnamespacestd;classHuman{public:stringname;intage;Human(stringname,intage);};Human::Human(stringname,intage):name(name),age(age){}booloperatorQ;Q.push(p1);Q.push(p2);Q.push(p3);Q.push(p4);Q.push(p5);whil

c++ - 使用 make_tuple 进行比较

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Implementingcomparisionoperatorsvia'tuple'and'tie',agoodidea?有时候我需要写一些丑陋的仿函数例如lhs.date_这让我很生气。所以我开始避免这样写:std::make_tuple(lhs.date_,lhs.time_,lhs.id_)我几乎很高兴,但请注意,我可能不是出于他们的目的使用元组让我担心。您能批评一下这个解决方案吗?或者这是一个很好的做法?您如何避免这种比较?更新:感谢您指出std::tie以避免复制对象。并感谢您指出重复的问题

c++ - 使用不遵循 'strict weak ordering' 的比较函数对列表进行排序

我有一个包含10个项目的列表。我想以特定方式对它们进行排序。例如。项目是A1,B,C1,A2,A3,F,G,C2,H,A4规则是C应该总是在A之前B应该总是在A之后所有其他项目应保持其顺序。所以排序后列表应该是这样的顺序C1C2A1A2A3FGHA4B我正在尝试使用C++std::stable_sort()方法来实现这一点。在我的程序中,所有项目都是结构“SItem”的实例,它有一个成员“type”来指示其类别(A、B等)。我的比较函数是这样的boolCompareItems(SItemconst&item1,SItemconst&item2){if(item1.type==A&&it

c++ - 在一次调用中根据 operator< 实现其他比较运算符

我已经看到了,如果你有operator,你可以实现,比如说,operator>=作为!(a.然而,当我去布里斯托尔的C++委员会时,他们说你可以用这种方式实现所有比较运算符。特别是,当考虑具有非平凡比较运算符的类型时(考虑任意长的字符串,特别是如果这是Unicode),只需调用一次operator即可完成。.我无法想象如何做到这一点。我如何实现operator>和operator只需调用一个电话operator而对其他比较运算符没有影响? 最佳答案 a>b==baa>=b==!(a甚至可以根据小于来实现相等性(有点滥用我的元语法):

c++ - 比较两组类型是否相等

如何检查两个参数包是否相同,忽略它们的内部顺序?到目前为止,我只有框架(使用std::tuple),但没有任何功能。#include#includetemplatestructtype_set_eq:std::false_type{};templatestructtype_set_eq,std::tuple>:std::true_type{//Shouldonlybetrue_typeifthesetsoftypesareequal};intmain(){usingt1=std::tuple;usingt2=std::tuple;usingt3=std::tuple;static_as

c++ - 基于成员字段或函数创建比较器的快捷方式

我经常发现自己想要为struct创建一个比较器对象或class它只是提取该类的一个成员并执行通常的比较。例如:structstudent{intid;std::stringname;};//sortbyIDstd::sort(students.begin(),students.end(),[](conststudent&l,conststudent&r){returnl.id那里有很多样板文件,特别是因为我们必须重复l的声明。和r.标准库中有没有一种方法可以基于返回要比较的对象的“提取器”函数创建比较器?类似于:std::sort(students.begin(),students.e

c++ - QVariant 与自己类型的比较工作?

更新我创建了一个qtbugticket希望文档得到扩展。原始问题相信Questionfrom2010和QtDocumentation,operator==()不适用于自定义类型。引用:boolQVariant::operator==(constQVariant&v)constComparesthisQVariantwithvandreturnstrueiftheyareequal;otherwisereturnsfalse.QVariantusestheequalityoperatorofthetype()itcontainstocheckforequality.QVariantwil